type TimeFormat =
  | 'YYYY-MM-DD'
  | 'YYYY/MM/DD'
  | 'YYYY-MM-DD HH:mm:ss'
  | 'HH:mm:ss'
  | 'YYYY年MM月DD日'
  | string; // 允许自定义格式

/**
 * 时间戳转自定义格式时间
 * @param timestamp 时间戳
 * @param format 时间格式（默认 'YYYY-MM-DD HH:mm:ss'）
 * @param isMillisecond 是否为毫秒级（默认 false）
 * @returns 格式化后的时间字符串
 */
export function formatTime(
  timestamp: number,
  format: TimeFormat = 'YYYY-MM-DD HH:mm:ss',
  isMillisecond: boolean = true
): string {
  const date = new Date(isMillisecond ? timestamp : timestamp * 1000);

  const padZero = (num: number): string => num.toString().padStart(2, '0');

  const year = date.getFullYear();
  const month = padZero(date.getMonth() + 1);
  const day = padZero(date.getDate());
  const hours = padZero(date.getHours());
  const minutes = padZero(date.getMinutes());
  const seconds = padZero(date.getSeconds());

  // 替换格式关键字
  return format
    .replace('YYYY', year.toString())
    .replace('MM', month)
    .replace('DD', day)
    .replace('HH', hours)
    .replace('mm', minutes)
    .replace('ss', seconds);
}
